<!DOCTYPE html>
<meta charset="utf-8">
<title>Typed Arrays Test: Uint8ClampedArray subarray</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="help" href="http://www.khronos.org/registry/typedarray/specs/latest/#7.1">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>

test(function() {
  var arr = new Uint8ClampedArray([1, 2, 3, 4, 5, 6, 7, 8]);

  test(function() {
    var subarr = arr.subarray(2);
    assert_true(subarr instanceof Uint8ClampedArray, "Returns Uint8ClampedArray");
    assert_equals(subarr.length, 6, "The length of subarray");
    assert_equals(subarr[0], arr[2], "The value of subarray");
  }, "Check if a new Uint8ClampedArray is returned for the Uint8ClampedArray, referencing the elements at begin");

  test(function() {
    var subarr = arr.subarray(2, 6);
    assert_equals(subarr.length, 4, "The length of subarray");
    assert_equals(subarr[0], arr[2], "The value of subarray");
    assert_equals(subarr[3], arr[5], "The value of subarray");
  }, "Check if a new Uint8ClampedArray is returned for the Uint8ClampedArray, referencing the elements at begin to end");

  test(function() {
    var subarr = arr.subarray(2, 10);
    assert_equals(subarr.length, 6, "The length of subarray");
    assert_equals(subarr[0], arr[2], "The value of subarray");
    assert_equals(subarr[5], arr[7], "The value of subarray");
  }, "Check if the subarray range specified by the begin and end values is clamped to the valid index range for the current array");

  test(function() {
    var subarr = arr.subarray(2, -2);
    assert_equals(subarr.length, 4, "The length of subarray");
    subarr = arr.subarray(-2, -1);
    assert_equals(subarr.length, 1, "The length of subarray");
  }, "Check if it refers to an index from the end of the array when either begin or end is negative");

  test(function() {
    var subarr = arr.subarray(4, 2);
    assert_equals(subarr.length, 0, "The length of subarray");
    subarr = arr.subarray(-1, -2);
    assert_equals(subarr.length, 0, "The length of subarray");
  }, "Check if the length is clamped to zero when the computed length of the new Uint8ClampedArray is negative");
});

</script>
